package com.gongj.rabbit.ttl;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 消费者
 * 直连模式
 */
public class Customer {

    public static void main(String[] args) throws Exception {
        // 创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("47.105.198.54");
        connectionFactory.setVirtualHost("/test-1");
        connectionFactory.setUsername("test");
        connectionFactory.setPassword("123456");
        //创建连接对象
        Connection connection = connectionFactory.newConnection();

        // 创建通道
        Channel channel = connection.createChannel();
        //通道绑定交换机
        //channel.exchangeDeclare("ttl-fanout", BuiltinExchangeType.FANOUT);
        /**
         * 该配置尽量与生产者一致
         * '参数1':用来声明通道对应的队列
         * '参数2':用来指定是否持久化队列
         * '参数3':用来指定是否独占队列
         * '参数4':用来指定是否自动删除队列
         * '参数5':对队列的额外配置
         */
        // 通道绑定队列
        Map<String, Object> map = new HashMap<>();
        //map.put ("x-expires" , 40000);
        channel.queueDeclare("ttl-quequ3",true,false,true,map);
        //channel.queueBind("ttl-quequ3","ttl-fanout","");
        /**
         * 参数1：String queue 队列名称
         * 参数2：boolean autoAck 开启消息的自动确认机制
         * 参数3：Consumer callback  消费时回调接口
         */
        //消费消息
//        channel.basicConsume("ttl-quequ3",true,new DefaultConsumer(channel){
//            /**
//             *
//             * @param consumerTag
//             * @param envelope
//             * @param properties
//             * @param body 消息队列中取出的消息
//             * @throws IOException
//             */
//            @Override
//            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//               System.out.println("消费消息：" + new String(body));
//            }
//        });
        GetResponse getResponse = channel.basicGet("ttl-quequ3", true);
        System.out.println(new String(getResponse.getBody()));
        //channel.close();
        //connection.close();
    }
}
